home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / MiscKit1.7.1 / MiscKitArchive.mbox / NeXT_Mail_from_the_C.attach / nextmail < prev   
Text File  |  1994-04-08  |  4KB  |  146 lines

  1. #!/bin/csh -f
  2. #
  3. # nextmail - send a nextmail attachment (any set of directories or files)
  4. #
  5. # Written by Zacharias J. Beckman, Dolphin Technologies Inc.  You may
  6. # distribute this script as you see fit, as long as you don't take this
  7. # comment out.  For an object which makes it possible to send NeXTMAIL from
  8. # inside your programs, send mail to info@dolphin.com.  Copyright (C) 1994
  9. # Dolphin Technologies Inc.  This script comes without warranty, and Dolphin
  10. # Technologies assumes no liability for damages, direct or consequential,
  11. # occuring as a result of using this script.
  12. #
  13. # Requirements:
  14. #
  15. # The C shell, tar, uuencode, and compress.  Sendmail must be available and
  16. # live in /usr/lib/sendmail, but you can change this easily.  You must have
  17. # write permission in /tmp, but this can also be changed easily.  See the very
  18. # first 'set' commands for details.
  19. #
  20. # Warnings:
  21. #
  22. # Don't try to put a space in the subject or recipient arguments without
  23. # enclosing them in quotes; the script expects the first argument to be the
  24. # subject, the second argument to be the recipient(s), and the remaining
  25. # arguments to be attachments.
  26. #
  27. # Example:
  28. #
  29. # nextmail "Pretty Pictures" zac@dolphin.com ~/Images/Pictures ~/NeXT.tiff
  30.  
  31. # set a few commonly used variables (if you have a variant UNIX that you want
  32. # to use this on, it is likely that you will have to change one or both of the
  33. # first two):
  34.  
  35. set sm = /usr/lib/sendmail
  36. set tm = /tmp
  37. set cm = $0
  38. set cm = $cm:t
  39.  
  40. # offer help and verify that arguments are valid:
  41.  
  42. if ( $#argv < 3 ) then
  43.     echo "$cm : $cm subject recipient[,recipient...] attachment [attachment...]"
  44.     echo "    example:    $cm ProjectStuff zac,tammy *.[hm] PB.project"
  45.     echo '    subject:    A non-broken or quoted string such as "Pretty pictures";\
  46.                 avoid any use of special characters such as exclamation points\
  47.                 or parenthesis as many shells will treat them strangely.\
  48.     recipient:  List of recipients, either comma delimited or quoted and space\
  49.                 separated such as "zac, sherry, tammy".\
  50.     attachment: One or more attachments, which can be directories or files, to\
  51.                 send in the NeXTMAIL (wildcards are ok).'
  52.  
  53.     exit 1
  54. endif 
  55.  
  56. # obtain a temporary directory that is safe to work under and a destination
  57. # filename for the file to send:
  58.  
  59. @ pn = $$
  60. set of = $tm/.tar.$pn.No_Subject_.attach
  61. set wd = $tm/.tar.$pn.attach
  62. set to = "$argv[2]"
  63. set sub = "$argv[1]"
  64.  
  65. while ( -e $of )
  66.     @ pn++
  67.     set of = $tm/.tar.$pn.No_Subject_.attach
  68. end
  69.  
  70. while ( -e $wd )
  71.     @ pn++
  72.     set wd = $tm/.tar.$pn.attach
  73. end
  74.  
  75. # set up the working directory where we create the attachment contents:
  76.  
  77. mkdirs $wd
  78.  
  79. if ( ! -d $wd ) then
  80.     echo "$cm : could not create working directory; aborted"
  81.     exit 1
  82. endif
  83.  
  84. @ count = 0
  85.  
  86. # prepare the nextmail header index.rtf
  87.  
  88. echo "{\rtf0\ansi{\fonttbl\f1\fnil Times-Regular;}\
  89. \margl120\
  90. \margr120" > $wd/index.rtf
  91.  
  92. # append each file into the nextmail document
  93.  
  94. while ($#argv > 2)
  95.     set if = $argv[3]:t
  96.     
  97.     if ( ! -e $argv[3] ) then
  98.         echo "$cm : $argv[3] does not exist"
  99.     else
  100.         echo "$cm : creating NeXTMAIL attachment for $if"
  101.         cp -pr $argv[3] $wd/$if
  102. echo "{{\attachment${count} ${if}\
  103. }\
  104. \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\f1\b0\i0\ulnone\fs28\fc0\cf0 ${if}\\
  105. " >> $wd/index.rtf
  106.         @ count++
  107.     endif
  108.  
  109.     shift
  110. end
  111.  
  112. # close the nextmail attachment
  113.  
  114. echo "}" >> $wd/index.rtf
  115.  
  116. # create the NeXTMAIL compatible archive:
  117.  
  118. if ($count > 0) then
  119.     cd $wd
  120.     tar cvf - . | compress -c | uuencode $of:t > $of
  121.  
  122.     # then send it off using sendmail, creating the Next-Attachment line:
  123.     
  124.     set sz = `wc $of`
  125.     set sz = $sz[3]
  126.  
  127.     echo "To: $to" >> prefix
  128.     echo "Subject: $sub" >> prefix
  129.     echo "Next-Attachment: $of:t, $sz, 1/1, 0, 0" >> prefix
  130.     echo "" >> prefix
  131.  
  132.     cat prefix $of | $sm "$to"
  133.  
  134.     # print summary statistics:
  135.  
  136.     echo "$cm : sent NeXTMAIL attachments to $to ($sz bytes)"
  137. else
  138.     echo "$cm : no files sent; message aborted"
  139. endif
  140.     
  141. # clean up
  142.  
  143. cd ..
  144. rm -rf $wd
  145. rm -rf $of
  146.